package com.sprouting.ops.utils;

/**
 * 校验工具类
 *
 * @author ：LX（长沙麓谷）
 * @date 创建时间： 2022/7/29 23:17
 */
public class CheckTool {

    private static final String UNDEFINED = "undefined";
    private static final String NULL_STR = "null";


    /**
     * 非null验证，无必要则可以使用 {@link cn.hutool.core.util.StrUtil#isNotEmpty(CharSequence)}
     * 如果验证的数据是 Null 之类的字符串，则认为是空数据。
     * @param str 待验证字符串
     * @return true 非空， false 是空
     */
    public static boolean checkNotNull(String str){
        return !checkNull(str);
    }

    /**
     * null验证
     * 如果是 "null" 字符串和 "" 都是认定为空。验证的字符串如果是 "null","Null","NuLL" 都会认定为空字符串
     *
     * @param str 待验证的字符串
     * @return true 是空  false 不是空
     */
    public static boolean checkNull(String str){
        if (str == null){
            return true;
        }
        str = str.trim().toLowerCase();
        if ("".equals(str) || UNDEFINED.equals(str) || NULL_STR.equals(str)) {
            return true;
        }
        return false;
    }

    /**
     * null验证
     * 进行升级，可以验证多个，只要一个是空就返回，否则全部验证完都非null就返回false
     * @param str 待验证的字符串
     * @return true 是空  false 不是空
     */
    public static boolean checkNull(String... str){
        if (str == null){
            return true;
        }
        for (String checkStr : str){
            if (checkNull(checkStr)){
                return true;
            }
        }

        return false;
    }
}
